# TF卡容量检测工具 Makefile
# 适用于gcc和交叉编译

# 编译器设置
CC ?= gcc
CROSS_COMPILE ?= 

# 如果指定了交叉编译器前缀，则使用交叉编译器
ifneq ($(CROSS_COMPILE),)
    CC = $(CROSS_COMPILE)gcc
endif

# 编译选项
CFLAGS = -Wall -Wextra -std=c99 -O2
LDFLAGS = 

# 调试版本编译选项
DEBUG_CFLAGS = -Wall -Wextra -std=c99 -g -DDEBUG -O0

# 目标文件
TARGET = tf_test
SOURCES = tf_test.c
OBJECTS = $(SOURCES:.c=.o)

# 默认目标
all: $(TARGET)

# 编译目标程序
$(TARGET): $(OBJECTS)
	$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
	@echo "编译完成: $(TARGET)"

# 编译对象文件
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# 调试版本
debug: CFLAGS = $(DEBUG_CFLAGS)
debug: clean $(TARGET)
	@echo "调试版本编译完成: $(TARGET)"

# 清理编译产物
clean:
	rm -f $(OBJECTS) $(TARGET)
	@echo "清理完成"

# 安装到系统目录
install: $(TARGET)
	install -m 755 $(TARGET) /usr/local/bin/
	@echo "安装完成: /usr/local/bin/$(TARGET)"

# 卸载
uninstall:
	rm -f /usr/local/bin/$(TARGET)
	@echo "卸载完成"

# 运行测试
test: $(TARGET)
	@echo "运行测试..."
	./$(TARGET) --help
	@echo "测试当前目录容量:"
	./$(TARGET) .

# 交叉编译示例 (riscv64)
riscv64:
	$(MAKE) CROSS_COMPILE=riscv64-anyka-linux-musl-

# 交叉编译示例 (arm)
arm:
	$(MAKE) CROSS_COMPILE=arm-nextvpu-linux-gnueabihf-

# 显示编译信息
info:
	@echo "编译器: $(CC)"
	@echo "编译选项: $(CFLAGS)"
	@echo "链接选项: $(LDFLAGS)"
	@echo "源文件: $(SOURCES)"
	@echo "目标文件: $(TARGET)"

# 代码格式化 (需要安装 indent)
format:
	@if command -v indent >/dev/null 2>&1; then \
		indent -linux -i4 -ts4 *.c *.h; \
		echo "代码格式化完成"; \
	else \
		echo "请安装 indent 工具进行代码格式化"; \
	fi

# 静态分析 (需要安装 cppcheck)
check:
	@if command -v cppcheck >/dev/null 2>&1; then \
		cppcheck --enable=all --std=c99 *.c; \
	else \
		echo "请安装 cppcheck 工具进行静态分析"; \
	fi

# 帮助信息
help:
	@echo "可用的make目标:"
	@echo "  all      - 编译程序 (默认)"
	@echo "  debug    - 编译调试版本"
	@echo "  clean    - 清理编译产物"
	@echo "  install  - 安装到系统目录"
	@echo "  uninstall- 从系统目录卸载"
	@echo "  test     - 运行测试"
	@echo "  riscv64  - 使用riscv64交叉编译"
	@echo "  arm      - 使用arm交叉编译"
	@echo "  info     - 显示编译信息"
	@echo "  format   - 代码格式化"
	@echo "  check    - 静态代码分析"
	@echo "  help     - 显示此帮助信息"
	@echo ""
	@echo "交叉编译示例:"
	@echo "  make CROSS_COMPILE=arm-linux-gnueabihf-"
	@echo "  make CROSS_COMPILE=riscv64-anyka-linux-musl-"

# 声明伪目标
.PHONY: all debug clean install uninstall test riscv64 arm info format check help